//
//  ShaderProgram.h
//  GSEngine
//
//  Created by Гукун Александр on 2/4/14.
//  Copyright (c) 2014 SNK. All rights reserved.
//

#ifndef __GSEngine__ShaderProgram__
#define __GSEngine__ShaderProgram__

#include <iostream>

namespace GSEngine
{
    enum EShaderType {
        EVertexShader   = 0,
        EFragmentShader = 1,
        ETextureShader  = 2
    };
    class ShaderProgram
    {
    private:
    // data
        const char* m_vsSource;
        const char* m_fsSource;
        unsigned int m_program;
        unsigned int m_vertexShader;
        unsigned int m_fragmentShader;
    public:
    // methods
        ShaderProgram();
        ~ShaderProgram();
        void loadDefaultSources();
        unsigned int getProgram();
        void initShaders();
        void deleteShaders();
        void setShader(EShaderType type, const char* source);
    };
}
#endif /* defined(__GSEngine__ShaderProgram__) */
